Several processors (such as microprocessors) compatible with CISC architectures (such as the X86 and VAX architectures) provide for one or more constant values to be optionally specified by each instruction, and each constant value optionally occupies a field of one of a variety of widths. Each constant variously represents a memory displacement, an absolute memory address, a segment identifier, an immediate value, or some other similar fixed value. In some processors enabled for fast and efficient execution, CISC instructions having variable-number and variable-sized constant values are translated to relatively simple operations.
In some usage scenarios, constants for immediate and displacement values appear are among the most frequently used addressing modes. For example, a well-known reference book for computer architecture (“Computer Architecture: A Quantitative Approach” by John L. Hennessy and David A. Patterson, 4th edition, Morgan Kaufmann Publishers, 2006/) indicates that immediates and displacements are used in 70% to 80% of memory addressing modes for representative programs. The Hennessy reference also indicates that the majority of immediate and displacement constants are small values that can be represented with just a few bits. Nevertheless, in some usage scenarios, a substantial percentage of immediate and displacement constants require a larger number of bits. For example, in some architectures, a complete word is required to represent an arbitrary memory address.
In some processors enabled for fast and efficient execution, CISC instructions having variable-number and variable-sized constant values are translated to relatively simple operations. In some processors, these translated operations are grouped together into longer instruction words known as “Very Long Instruction Word” (VLIW) formats. VLIW formats optionally provide flexible representation for small and large constant values. For example, the Multiflow VLIW instructions (R. P. Colwell et al, “A VLIW architecture for a trace Scheduling Compiler,” IEEE Transactions on Computers, August 1988, pp. 967-979.) support small constant values stored with each operation, as well as large constant values that are optionally associated with any operation of a VLIW instruction word.
All of the foregoing patents and references are hereby incorporated by reference for all purposes.